package com.sun.mybatisplus.origin;

import org.quartz.*;

import java.util.Date;

/**
 * 使用原生的quartz
 * SpringBoot此项跑不起来
 *
 * @DisallowConcurrentExecution: 不允许并发访问，按照顺序一个一个来。前面没有执行完成，后面就不能执行
 *
 * @PersistJobDataAfterExecution :将我们的JobDataMap实例化。因为每次创建的JobDetail都不一样，但是他们都是一个Job的
 * 这样操作。就会将创建的JobDetail实例进行合并
 *
 */
@DisallowConcurrentExecution
@PersistJobDataAfterExecution
public class MyJob implements Job {

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        //取到JobDetail中传递的参数
        Object username = context.getJobDetail().getJobDataMap().get("username");
        System.out.println("job executor........" + new Date());
        System.out.println("==================================================");
        /**
         * 此项说明。每执行一次Job任务，都会创建不同的JobDetail和JobInstance
         *
         * Schedule每次执行的时候都会根据JobDetail创建不同的Job.以此来解决并发的问题
         */
        System.out.println(System.identityHashCode(context.getJobDetail()));
        System.out.println(System.identityHashCode(context.getJobInstance()));
    }
}
